|
التحكم من
جوال أو ثابت الى
ثابت | |
|
ما يجب معرفته عن
التلفون الثابت.
عندما تكون
السماعه مغلقه يجري في الخط تيارا مباشرا وقدره 48 فولت
تقريبا و عندما ترفع حوالي 8 فولت تقريبا , اما كمية
التيار فهي قليله جدا بحوالي 20 ميليأمبير.
يرن
الجرس في التلفون , عندما السنترال ترسل عبر الخط تيارا
مترددا بجهد 90 فولت 20 هيرتس
تقريبا
وتيار 25 ميليأمبير.
ما هي
الشيفره التي يرسلها تلفوني ليفهم السنترال الرقم الذي
طلبته .؟
يستعمل
النغمات ( نعم الأصوات) فكل زر تظغط عليه يحدث نغم وأنت
تسمعه ( توت , تات , تين الخ ) وكل نغم مركب من ذبذبتين
صوتيتين حسب
الجدول التالي .
|
| |
|

|
DTMF - Coding Frequencies
|
|
Digit
to be Encoded
|
Low
Frequency Values (Hz) |
|
Digit
to be Encoded
|
1
|
2
|
3
|
A
|
697
|
| 4
|
5
|
6
|
B
|
770
|
| 7
|
8
|
9
|
C
|
852
|
| *
|
0
|
#
|
D
|
941
|
|
High
Frequency Values (Hz) |
1209
|
1336
|
1477
|
1633
|
| | |
|
مشروعنا
عباره عن دائره متكامله تعرف متى يرن جرس التلفون فتقوم
بفتح الخط والإنتظار لمدة عشر ثواني خلال هذا الوقت وبينما
الخط مفتوح فاذا ظغط على زر من الطرف الآخر فإن دائرتنا
تتعرف على الرقم وبناء عليه تفتح أو تغلق مُرحلا للتحكم
بما نريد.
إذا مرة
العشر ثواني أغلق الخط اوتوماتكيا , قلب المشروع هو
المتحكم الصغير , وهذا يفتح امامنا مجالات لا نهاية لها ,
فمثلا يمكننا إدخال كلمة سر الخ .
|
| |
|
إلتقاط وعزل إشارة
الجرس |
| |
 |
C 1 470 nF 250V AC R1 10 kohm 1W D1,D2 10-20V zener دايود
قدرة400 mW D3 1N4148 diode
U1 4N27
عازل
ضوئي | |
|
|
الخطان الأحمر والأخضر توصل مباشرة على خط
التلفون , المكثف C1 مهمته عزل التيار المباشر
ويسمح فقط بمرور التيار المتردد , دايودات
الزنر والمقاومه موضوعه بشكل تخفف من جهد
التيار وتأقلمه بشكل أنها عندما يرن الجرس
يظيئ الصمام الثنائي المضيئ الموجود بداخل العازل
الضوئي , ( وهذا الأخير عمله شبيه للمُرحل )
فيتحكم بأي داره موصوله في الطرف الآخر
موصوله على الطرف 4 و 5 الطرف 6 يبقى
طليقا في الهواء.
بذلك أصبحت لدينا الدائره , التي سترسل بيت
1 الى المتحكم الصغير لتخبره برنين الجرس و 0
عندما يتوقف .
بعيدا عن موضوعنا : بهذه الدائره مع مُرحل
بإمكانك عمل دائره تستبدل بها رنين الجرس
بإظائة لمبه . لعدم إزعاج الأطفال النائمين
أو في أماكن الموسيقى العاليه . كل ما تريد
لنرى دائره أخرى تقوم بنفس الغرض.
| | |
|
 |
C1 470 nF 250V
AC R1 10 kohm
1W D1 10-20V zener diode 400 mW
power rating RECT1 Rectivifier bridge 200V
voltage,0.1 current U1 4N27
or CNY17 optoisolator | |
|
|
|
الآن إنتهينا من موضوع التقاط اشارة
الجرس , فنحن بحاجه الى دائره , تفهم النغمات الصوتيه
المركبه من ذبذبتين والتي تسمى
بشيفرة DTMF وتعيدها الى حالتها الأساسيه أي
أرقام نفهمها
من الصفر الى التسعه . والهدف من ذلك
عندما نضغط على رقم من هاتف بعيد مشروعنا هنا يفهم
الرقم . وأفضل دائره تقوم
بهاذا العمل هي دائرة الشريحه الإلكترونيه IC وهو
MT88L70
| | |
|
|
|
|
|
إذا ضغط على زر أو Key واحد سيظهر لنا 0001
وكل ما تبقى حسب ما هو ظاهر في الجدول
ما يهمنا من هذه الدائره قد إنتهينا منه
, ولكن بالمناسبه يمكننا بناء دائره تكشف لنا الأرقام
التي
تمرك على التلفون بقليل من القطع
وهذا هيكلها البياني .
| | |
|
|
|
أصبحنا نعرف متي
يرن الجرس ونحسن إستخدامه في دائرتنا , كذلك الأمر نستطيع
فك شيفرة
الأرقام ومعرفتها
, وسؤالنا كيف سنفتح الخط لنجاوب ؟ من سيرفع لنا السماعه ؟
وإذا كان
تحكما عن بعد ,
معنى ذلك أن لا أحد قرب الدائره , اليك الحل
.........
|
| |
|
|
عندما نرفع السماعه, تتغير المقاومه
الموجوده داخل دوائر جهاز التليفون, وبذلك يعرف
السنترال
انه فتح الخط , وحلنا يكمن بوضع مقاومه
متوازيه مع خطوط التلفون بقدر 560 أوم لتقوم بنفس
العمل . ونتحكم بها من خلال مُرحل أو
ريلاي , وهذا الأخير يتحكم به الميكروكونترولير ( أي
برنامجنا)
فالنرسم هذه الدائره .
|
| |
|
|
|
الترانسيستور في الدائره أعلاه يعمل
كمفتاح , فعندما يرسل الميكرو بيت 1 إلى قاعدة
الترانسيستور
هذا الأخير يسمح بمرور التيار في ملف
المُرحل فتغلق دائرة خطوط التلفون , فيفهم السنترال أن
المكالمه قد بدأت.
ما ينقصنا الآن هو دائرة ما نريد التحكم
به . ( راديو , تلفزيون , مروحه ..... الخ) وهذا أيضا من
خلال ريلاي وأعتقد أنك أصبحت خبيرا في
أمور الريلاي. لنرى الدائره إذا....
|
| |
|
|
|
ما نريد من دوائر جانبيه, إنتهينا منه ,
الآن نريد العقل المدبر , الذي يسمع الجرس فيفتح الخط
وينتظر عشر ثواني إذا الرقم خمسه شغل
المروحه مثلا وإذا سته أطفأها وإذا لم يستلم شيئ ومرت
العشر ثواني أغلق الخط وأنهى المكالمه
كأن شيئا لم يحدث.
العقل المدبر هو المحترم , الصديق
الوفي الميكرو pic 16f84 ,
أول عمل سنقوم به هو توزيع
المهمات لكل بين ( رجل )
|
| |
|
|
|
سنخصص الطرف 1 ( منفذ
A , 2 أو PortA,2
أو بإختصار
pa,2 ) للتحكم بالريلاي
الذي
يفتح ويغلق الخط .
سنخصص
الطرف 12 ( pb,6 ) للتحكم بالريلاي
الذي يشغل أو يطفئ المروحه مثلا أو ما تريد
سيقرأ الميكرو الرقم الثنائي
المكون من أربعه بيت والذي يعطينا إياه ال 8870 بالوصل المباشر
بين الأرجل (طرف) على الشكل
التالي
6,7,8,9,
في
الميكرو
14,13,12,11
في
8870
فاتني أن أخبرك شيئ مهم عن
8870 هو أن هذه
الدائره المتكامله تخبرنا من خلال الطرف 15
( STD )
أنه قام بإستلام رقم ما , فيظهر في هذا الطرف البيت
واحد.
وهذه
الميزه الجيده سنستعملها في الميكرو بوصل هذا الطرف بالطرف رقم
عشره ( (
pb,4
هذا كل ما
قررناه من توصيلات إذا فالنجمع هذه الدوائر بدائره
واحده.
| | |
|
|
|
|
 |
|
صديقي العزيز : لا شك أن شكل دائرتنا
تغير , أكملنا دائرتي الريلاي ووضعنا لها بهاراتها وأنا
أسمي
بهارات ( المقاومه والتراسيستور
والدايود
التابع لكل دائره )
قمنا بألإمدادات الكهربائيه , بواسطة
بطاريه 9 فولت , وهذا لصالحنا لأنها متوفره في الأسواق
,
والأهم من ذلك أننا إستطعنا إستخلاص
جهدين مختلفين +9 نستعمله لتغذية ملف الريلاي و +5
هو ما يحتاجه الميكرو وال 8870 كل ذلك تم
بإدخال 7805 على الدائره .
بقي لنا , إضافة دائرة الجرس , وبهارات
الميكرو وال 8870 , أصبحت تعرف ما أقصد؟ نعم
( الكريستال , والمكثفات , والمقاومات )
|
| |
|
|
|
ألحمد لله إنتهينا من جمع الدوائر بدائره
واحده , النقطتان الكبيرتين الحمراء والخضراء وبينهما
كلمة
تلفون يوصل عليهما خط التلفون .
إني عرضت دائرتين لرنين الجرس فإخترت
الثانيه والتي تستعمل جسر الدايود . ففي الصوره هذه
الدائره موضوعه في مربع أخضر , أما
مواصفات القطع يمكن أخذها من الدائره التي عرضتها
وصلنا هذه الدائره بترانسيستور
كمفتاح
طريقة جمعنا هذه ورسمها من خلال باينت (
برنامج رسم ويندوس ) كان لتجميع الفكره والتوضيح
فنظريا الدائره مكتمله ويجب أن تعمل على
أحسن شكل .
هدفي أن نتعلم سويا هذا العلم الرائع ,
فهو ليس إحتكارا لأحد . فإذا أردت القيام بهذه الدائره
فهناك
العديد من البرامج الخاصه لرسم وصنع
الدوائر . يمكنك الدخول عبر رابط مواقع عربيه صديقه
الى
منتديات البحرين وستجد العديد من هذه
البرامج .
فإذا فعلت أخبرنا بما جد معك . لأنني
سأفرغ وقتي الآن الى برنامج الميكرو.
| | |
|
|
|
;التحكم عن بعد تلفونيا
|
|
; لفهم البرنامج بشكله
الصحيح يجب أن تكون قد درست ما ذكرناه عن الميكرو في
الموقع وعلى
كل |
|
; سأكون أكثر وضوحا وشرحا
هنا معتبرا هذا البرنامج كتطبيق وتوضيح لما تعلمناه فهذا سيكون بعون
الله |
|
; أكثر البرامج
وضوحا ,
سنستعمل الأم بي لاب لكتابة برنامجنا , وهذا الأخير عباره
عن وسيط بينك وبين
|
|
; الميكرو , فما يسجل في
الميكرو وما يفهمه هو النظام الرقمي السادس عشري أو هيكس ( القي
نظره على |
|
; درسنا الأنظمه الرقميه)
ولكن طبيعة الإنسان أسهل عليه حفظ التعاريف والكلمات كحفظ
الأرقام وخاصة في
|
|
; غير نظام أرقامنا
العشريه فلذلك أنت تتعلم التعريفات والأوامر بلغة أسمبلير
الخاصه بالميكرو
والأم بي لاب
|
|
; يقدم لك الخدمه
والمعروف بتحويلها الى هيكس ( كثر الله خيره
أليس كذلك ؟ ) وله حسنات منها أنه يعتبر كل
|
|
; ما يكتب بعد فاصله
وفوقها نقطه ( كهذا الذي نكتبه الأن ) كلام بلا طعمه ولا
دخل له بالبرنامج فلا يحوله
|
|
; وهو بحاجه الى مساعدتك
فما يريد منك فثط أن تختار نوع الميكرو لأنه صنع ليبرمج
أنوعا عديده من الميكرو
|
|
; يا أخي قل له ما ستخسر
؟ .....كيف كيف كيف ......؟؟؟؟؟؟؟ .... طيب سأقول لك يجب
أن يتضمن برنامجك
|
|
;
LIST
p= 16f84 كلمة
|
|
; وضمن أدوات التحكم هناك
خانه خاصه تختار بها هذا الميكرو كذلك الساعه التي
ستختارها ونحن إخترنا
|
|
;لمشروعنا الكريستاك 4
ميغاهيرتس
( راجع درسنا الأم بي لاب )
|
|
; طيب عال وغيره ؟
|
|
; 16f84.inc الأم ب لاب
يحمل ملف إسمه
|
|
; إذا فتحت هذا الملف فستجد أنه
عباره تعريفات لكل السجلات و البيتات المؤلفه منها
والموجوده داخل هذا الميكرو
|
|
; porta
equ
05h
مثلا فستجد
|
|
; وهذا معناه أن الأم ب
لاب يقول لنا ... يا سيدي أكتب برنامجك كما تريد ... ولكني
أعدك أنني أينما أجد كلمة
|
|
; porta |
|
; 05h سأحولها الى الرقم
|
|
; كثر الله خيرك فهو ما
يفهمه الميكرو ببورت أ
|
|
; include “ p16f84.inc”لا شكر على واجب ولكن يجب أن يتضمن برنامجك هذا
الملف... كيف ؟
أكتب |
|
; قيقول لنا الأم ب لاب
محذرا .. ولكن إعلم أنك يجب أن تستخدم التعريفات كما هي
ظاهره في الملف فكلمة
|
|
; porta |
|
; يجب أن تكتب كما هي ,
وإلا ما بحولها والسماء زرقاء , فتروح تتفنن وتكتبلي
|
|
; para , pta, PORTA,
|
|
; طيب يا أخي يا أم بي
لاب , كفاك تهديدا , فأنا لا زلت مبتدأ , أنا هاوي مش
مهندس الكترونيات , ما شاء الله
|
|
; عليهن , رفعو راس
هالأمه
بزكاهم وتواضعهم وعدم أنانيتهم , شو بدي إحكيلك
لإحكيلك يا أم ب لاب فتراه
|
|
; ينحني خجلا , وكأنه
عرفني بأنني عربي , ويقول طيب يا أخي , ضع التعريفات كما
تريد , واحده تلو الأخرى
|
|
; p16f84.inc مما تريد
إستعماله
وتركلي على جنب موضوع
|
|
; ما رأيكم
؟ طيب سنضع التعريفات على ذوقنا
|
|
; يناديني الأم ب لاب على
جنب ويقول ( منذ ساعه وأنت تكتب كلام , كما قال أبو عنتر
مالو فكاهه ولا مازيه
|
|
; ......شو رأيك تعلم
الشباب بالمناسبه كيفية إستعمال الذاكره الدائمه إإبروم
فتخزن حالة المروحه إذا كانت تعمل
|
|
; أم واقفه ) والله فكره
حلوه يا أم بي لاب وسنعمل بها
|
|
; فيجاوب الأم ب لاب
يالله إبدأ وخلصني طفرتني
|
|
; طيب كما تريد أنهينا
النقطه والفاصله |
|
; خذ شيئا يعجبك
|
|
List
p = 16f84 |
|
|
|
Stat
equ
03h
; كلمة ستاتوس كبيره وبدي
غيرها بستات |
|
Mona
equ
05h
; كلمة بورت أ لم تعجبني بدي من أ يعني منفذ
أ
|
|
Monb
equ
06h
; منثذ ب
|
|
Taw
equ
0dh
;
سجل إخترته من الذاكره
رام وسأستعمله في عملية التوقيت
|
|
Taw1
equ
0eh
;
كذلك آخر للتوقيت
|
|
Ta7a equ
0fh
; سجل إخترته للتحكم
|
|
Ma3
equ
10h
; معلومه
|
|
Dad1
equ
11h
; عداد واحد
|
|
Dad2
equ
12h
; عداد 2
|
|
| | |
|
; طيب يا حسن علي , سجل
ستاتوس موجود في ملف إنك فعرفته كما هو موجود ك صفر تلاثه
هيكس |
|
; وغيرته على ذوقك بستات فهمنا
, كذلك الأمر فعلت ببورت أ وبورت ب كذلك
الأمر فهمنا موجودين |
|
; Taw , Taw1 , Ta7a , Ma3 , Dad1, Dad1 تعريفاتها من أين لك هذه السجلات وكيف
إكتشفت |
|
; يا صديقي المحترم , تذكر ما
درسناه عن الميكرو , فنحن نشرنا خارطة ذاكرة الميكرو وموقع
السجلات
|
|
; أنظر نفس الصوره تحت , فهناك
68 سجل من ذاكرة رام تستخدمها أنت كمبرمج لما تريد وعنوانها من
|
|
; 0ch - 4fh
|
|
; فيمكنك أن تسمي السجل كما
تريد وتُعرفه بالعنوان الذي
تختاره ضمن هذه الحدود وهذا ما فعلت
| | |
|
|
|
Eedata
equ
08h سجل معلومات
|
|
Eeadr
equ
09h سجل
عناوين
|
|
econ1
equ
88h
;eeprom سجل تحكم |
|
econ2
equ
89h
;
eeprom
سجل تحكم
|
|
Trisa
equ
85h
|
|
Trisb
equ
86h
|
|
Z
equ
02h
|
|
C
equ
00h
|
|
W
equ
00h
;w بهذا نؤشر الى أن
النتيجه تضع في
|
|
S
equ
01h
; بهذا نأمر ان تضع
النتيجه في السجل |
|
;eecon1
الآن سنعرف أو نوازي البيتات
الخاصه بسجل |
|
Eeif
equ
04h
|
|
Wrr
equ
03h
|
|
Wen
equ
02h
|
|
Wr
equ
01h
|
|
Rd
equ
00h
|
|
; طيب من التعريفات أو وضع الموازات
وأعلم كمبتدأ أنه لك العديد من الأسأله وهذا ما وقعت به
|
|
; أنا شخصيا الرد على تساؤلاتك في هذا
الجدول فالتقطه |
| |
|
06h |
PORTB |
RB7
|
RB6
|
RB5
|
RB4
|
RB3
|
RB2
|
RB1
|
RB0
INT
|
|
07h |
|
غير
مزوع ,
لا وجود
له |
|
08h |
EEDATA
|
EEPROM سجل معلومات
|
|
09h |
EEADR
|
EEPROM سجل
عناوين
|
|
0A |
PCLATH
|
|
|
|
PC الخمسه بيت
الأكثر ثقلا من |
|
OB |
INTCON
|
GIE
|
EEIE
|
T0IE
|
INTE
|
RBIE
|
T0IF
|
INTF
|
RBIF
|
|
1
بنك
|
|
80h |
INDF
|
FSR عنوان(ولا
يعتبر كسجل موجود)
|
|
81h |
OPTION
|
RBPU
|
INTE
|
T0CS
|
T0SE
|
PSA
|
PS2
|
PS1
|
PS0
|
|
82h |
PCL
|
PC الثمانيه
بيت الأخف من |
|
83h |
STATUS
|
IRP
|
RP1
|
RP0
|
TO
|
PD
|
Z
|
DC
|
C
|
|
84h |
FSR
|
مصوب
للتوجيه الغير مباشر |
|
85h |
TRISA
|
|
|
|
عنوان
معلومات بورت أ
|
|
86h |
TRISB
|
عنوان
معلومات بورت ب |
|
87h |
|
غير
مزروع |
|
88h |
ECON1
|
|
|
|
EEIF
|
WRR
|
WEN
|
WR
|
RD
|
|
89h |
ECON2
|
EEPROM
ثاني سجل للتحكم
ب |
|
0Ah |
PCLATH
|
|
|
|
PC
الخمسه بيت الأكثر ثقلا من |
|
0Bh |
INTCON
|
GIE
|
EEIE
|
T0IE
|
INTE
|
RBIE
|
T0IF
|
INTF
|
RBI | | |
|
طيب يا حسن علي إنتهيت من وضع الموازات....
ولكن كان أسهل لك بأت تكتب include 16f84.inc
وبلا وجع هالراس , .... لا
تنسى أننا نقدم هنا شرحا مفصلا فيه كل صغيره وكبيره للشباب
... | | |
|
طبق البرنامج من
هنا في حال حدوث (إعادة
إنضباط )
Org
00
; reset |
|
Goto
bidayah; إذهب الى السطر الذي تجد أمامه كلمة
بدايه
|
|
; الآن نحن بحاجه إلى عدة سوب روتينات
لنستعملها في برنامجنا ..... ما هذه ومن أين أتيت بها
|
|
; الريست والسوب روتين مشروحه في الموقع
ولأذكرك السوب روتين عباره عن برنامج صغير داخل
|
|
; البرنامج العام تبدأ بإسم السوب روتين
وتنتهي بكلمة ريتارن أي عد.......سبحان الخلقك والله
فهمتني ... |
|
; طيب يا أخي أنظر كيف سنعمل عدة
سوبروتينات نحتاجها في برنامجنا ..ولعلمك الحق علي أنا
..
|
|
; لطول لساني وعدت أن أكتب في ال إإبروم
وهي الذاكره الدائمه يعني وكأنك تكتب في القرص الصلب
|
|
;الهارد ديسك ... ما قصدك صعبت عليك
المهمه ؟ لا لا باطل ... أبو الميكرو ومن إخترعه ..عربي
أنا
|
|
; أنظر كيف سنضع ثلاث سوب روتينات متعلقه
في هذا الموضوع بالتحديد هناك أسلوب معين لقرائة
|
|
; ال إإبروم فسنضع ذلك في سوب روتين
ونسميه قرائه كذلك الأمر آخر ونسميه كتابه , وأنا أعلم أن
|
|
;عملية الكتابه هذه تستغرق وقتا أكثر
منه ذاكرة رام
فيجب أن أكتب سوب روتين ثالث ينتظر حتى
|
|
;تنتهي الكتابه ويعلمني بذلك وسأسميه
استنا .
لنرى ما سيحدث |
|
Kira
bsf
stat,5
; إذهب الى البنك الثاني
|
|
Bsf
econ1,rd ; ضع البيت الذي يبدأ القرائه
|
|
Bcf
stat,5
; إرجع الى البنك الأول
|
|
Movf
eedata,w
;W
حرك إإداتا
وضعها في
|
|
Return
;
إرجع
|
|
; ما رأيك إنتهينا ..... لنحاول سوبروتين
الكتابه
|
|
Kitab
bsf
stat,5
; روحلي على ثاني
بنك
|
|
Bsf
econ1,wrr ; ضع بيت تقبل
الكتابه ...يالله |
|
Bcf
econ1,eeif
; ضع العلم صفر , تأكد لي
من ذلك
|
|
; الأوامر الخمسه التاليه هي إجباريه ,
بأوامر من ميكروتشيب الشركه المصنعه
|
|
Movlw
55h
|
|
Movwf
econ2
|
|
Movlw
aah
|
|
Movwf
econ2
|
|
Bsf
econ1,wr ; ضع بيت
الكتابه لكي تبدأ |
|
; إنتهت السوب روتين ولم نضع كلمة ريتارن
لأننا نريد أن نتواصل مع سوب روتين الإنتظار التي تليها
|
|
Stana
clrwdt
|
|
Btfss
econ1, eeif ;
إسأل هل إنتهت عملية الكتابه
|
|
Goto
stana
; إذا لا إنتظر
|
|
Bcf
econ1,eeif ;
إذا نعم إمحي علم
نهاية الكتابه |
|
Bcf
econ1,wen
;
وقف لا تعود تتقبل كتابات
|
|
Bcf
stat,5
; عد الى البنك الأول
|
|
Return
; إرجع وخلصنا
| | |
|
الوقت , كيفية
التحكم به , هو أهم ما يجب على المبرمج معرفته , ففي
برنامجنا هذا مثلا إستخدمنا كساعه الكريستال 4 ميغاهيرتس
يعني أربع ملايين دوره في الثانيه , وسرعة تطبيق الأوامر
عباره عن ربع سرعة الساعه أي مليون أمر في الثانيه , ما
رأيك ؟ طياره.... بل أسرع من الصاروخ والرصاص , الميكرو
يطبق مليون أمر في الثانيه.... أي أن كل أمر بحاجه الى
ميكروثانيه ليطبق , وهناك أوامر بحاجه الى 2 ميكروثانيه
سنشرحها . المهم نضع سوب روتين للتحكم بالوقت وستكون بهذه
الطريقه , نحن نعلم أن 8870 بحاجه الى توقيتات من
ميليثواني وليس ميكرو .... إذا لنضع سوب روتين توقيت
ميليثانيه
| | |
|
Milith
movwf
taw
; سجل تاو سيحمل عدد
الميليثواني التي نريدها
|
|
Fawk1
movlw
D´110´
; w حرك الرقم العشري مئه وعشره الى
|
|
Movwf
taw1
;ضع الرقم مئه وعشره في هذا
السجل
|
|
Fawk2
nop
: لا تعمل شيئا
|
|
nop
|
|
nop |
|
nop |
|
clrwdt |
|
nop
|
|
Decfsz
taw1
; نزل واحد وإذا وصلت
للصفر أقفز أمر |
|
Goto
fawk2
|
|
Decfsz taw
|
|
Goto fawk1
|
|
Return
| | |
|
يا صديقي يا حسن , وضح لي هذه السوب روتين أكثر
, لنفهمها
.... على راسي يا محترمين .... شوف عيني ....إفترض نحنا
بدنا توقيت عشر ميليثواني ... نحمل في سجل W الرقم عشره ثم نذهب الى سوب روتين
milith فما سيحدث ,
سيحمل هذا الرقم في سجل taw معي لهنا جيد جدا ....الآن سيحمل الرقم العشري
مئه وعشره في سجل
taw1 كذلك واضح
....جيد ....بعدها يأتي أربع أوامر متتاليه nop ومعناها no operation لا تعمل شيئ , فعلا هذا الأمر لا فائده عمليه
منه , فالميكرو لا يعمل شيئ , ولكنه يستهلك ميكرو ثانيه من
الوقت , وضعنا أربعة أوامر nop
فتمر أربعه ميكروثانيه من الوقت ....
جيد ....بعدها يأتي أمر clrwdt كذلك الأمر لا يؤخر ولا يقدم بل يستهلك
ميكروثانه
... وبعده nop ميكروثانيه أخرى .... فأصبح لدينا حتى الآن
ستة ميكروثانيه قد مرت .... يأتي بعدها الأمر decfsz
فهذا الأمر يستهلك ميكروثانيه , فأصبح لدينا سبعه
.... الأمر
goto الذي يليه يستهلك
2 ميكروثانيه مجموع تسعة ميكروثواني ....
المهم في هذا الترتيب حتى الآن ...taw1 أنه أصبح مئه وتسعه والأمر
goto سيذهب بنا الى
fawk2 مجددا , ويبقى
البرنامج يتراوح بين goto و fawk2 حتى يصبح سجل taw1 صفر , وهذا يحدث بعد مئه وعشر دورات .
ففي كل دوره تمر تسعة ميكروثانيه .....ففي
المئه وعشر دورات تكون قد مرت تسعمئه وتسعين ميكروثانيه أي
تقريبا ميليثانيه واحده ..... أعتقد واضح وضوح الشمس
....
نحن أردنا عشر مليثواني ... فالأوامر التي تلي
تنقص واحد من سجل taw الذي يحمل عدد الميليثواني وتعاد الكره حتى
تمر العشره ميليثانيه .
| | |
|
حتى الآن
شرحنا كافي ووافي , ولكن خلال عملية الشرح , تفرق برنامجنا
كثيرا , وأدخلنا صور وغيره , كذلك لن ننسى تهديد الأم ب
لاب , بأن لا نخطأ بين حرف كبير وحرف صغير , آن الأوان
لنحل هذه المشاكل , سنجمع ما كتبناه بدون شرح وسنحول كل
الكلمات إلى حرف كبير . وبعدها نكمل .
| | |
|
إضغط هنا من
فضلك |
|